package com.doitedu.hdfs.client;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

import java.net.URI;

/**
 * @Date 2021/11/30
 * @Created by HANGGE
 * @Description
 * 将windows上的一个文件 ,存储到HDFS上
 * 1 文件系统 FileSystem
 */
public class C01_Demo01 {
    public static void main(String[] args)throws  Exception {
        // 获取hdfs的连接对象
        /**
         * 创建文件系统对象
         * 参数一  URI  分布式文件系统 HDFS的资源地址 NN地址
         * 参数二  Configuration  用户自定义参数设置   副本数 3   物理切块的大小 128M
         * 参数三  user  客户端用户名
         */
        URI uri = new URI("hdfs://linux01:8020");
        Configuration conf = new Configuration();
        String user = "root" ;
        // HDFS 文件系统
        FileSystem fs = FileSystem.newInstance(uri, conf, user);
        // 调用API 上传文件
        /**
         * 参数一  源路径    本地
         * 参数二  目标路径   HDFS
         */
        Path srcPath = new Path("d://word.txt");
        Path diskPath = new Path("/");
        fs.copyFromLocalFile(srcPath,diskPath);
        /**
         * 参数1  是否删除源文件
         * 参数2  如果HDFS 中存在 , 是否覆盖
         * 参数3  待上传的文件 多个
         * 参数4  目标路径
         */
        // copyFromLocalFile(boolean delSrc, boolean overwrite, Path[] srcs, Path dst)

        // 关闭连接
        fs.close();
    }

}
